home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
pascal
/
dow.exe
/
DOWTST.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1992-04-13
|
2KB
|
54 lines
program DowTst; {Turbo Pascal 5.0, 5.5, 6.0}
{ Ref: Determining Day Of Week, PC Magazine, April 28, 1992, p428 }
{-------}
{ Dow returns day of week as an integer (0 = Sunday, 1 = Monday, ..
6 = Saturday). The inputs are not checked for validity.
Example: Dow(1,31,1992) returns 5.}
function Dow(Month,Day,Year : integer) : integer;
const
Calendar : array[0..11] of integer = (0,1,-1,0,0,1,1,2,3,3,4,4);
begin
Dow := (((Year-1)*longint(365)) {num of days of normal years - 1}
+ ((Year-1) div 4) {num of possible leap days}
- (((Year-1) div 100) {num of non-century leap days}
- ((Year-1) div 400))
{num of days in month passed}
+ (Calendar[Month-1] + ((Month-1)*30))
+ integer((((Year mod 4 = 0) and (Year mod 100 <> 0))
or (Year mod 400 = 0)) and (Month > 2))
+ Day) mod 7
end; {Dow}
{-------}
{ DowStr returns day of week as a string (Sun, Mon, Tue, Wed, Thu, Fri, Sat).
Example: DowStr(1,31,1992) returns 'Fri'). }
function DowStr(Month,Day,Year : integer) : string;
const
DayS : array[0..6] of string[3]=('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
begin
DowStr := DayS[Dow(Month,Day,Year)]
end; {DowStr}
{-------}
var
Month,Day,Year,Code : integer;
begin
if ParamCount <> 3 then
begin
Write('Enter date (MM DD YYYY): ');
Read(Month,Day,Year);
end
else
begin
Val(ParamStr(1),Month,Code);
Val(ParamStr(2),Day,Code);
Val(Paramstr(3),Year,Code)
end;
Writeln('Day of week: ',DowStr(Month,Day,Year));
end.